Ubuntu下autossh 解决内网访问

您所在的位置:网站首页 开机auto adjust解决 Ubuntu下autossh 解决内网访问

Ubuntu下autossh 解决内网访问

2024-06-20 08:55| 来源: 网络整理| 查看: 265

autossh 解决内网访问 准备 公网服务器(阿里云、腾讯云都可)需要访问的目标内网服务器 公网服务器配置

修改公网主机 B 的 SSH 配置文件/etc/ssh/sshd_config

GatewayPorts yes

这样可以把监听的端口绑定到任意 IP 0.0.0.0 上,否则只有本机 127.0.0.1 可以访问。

重启 sshd 服务

sudo service sshd restart 内网服务器配置

在内网主机 A 上,执行以下命令安装 AutoSSH

yum install autossh #centos apt-get install autossh #ubuntu

断线免密登录自动重连

ssh 反向链接会因为超时而关闭,如果关闭了那从外网连通内网的通道就无法维持,为此我们需要结合免密码登录及 AutoSSH 来提供稳定的 ssh 反向代理隧道。

1、在内网主机 A 上产生公钥和私钥

ssh-keygen

然后按三次回车执行默认选项生成公钥和私钥。会生成密钥文件和私钥文件 id_rsa,id_rsa.pub 或 id_dsa,id_dsa.pub

2、拷贝秘钥 在内网主机 A 上继续执行如下命令,将内网主机 A 上的秘钥文件 copy 到公网主机 B 中。

ssh-copy-id username@ip

其中“username”是公网主机 B 的用户名,ip 为公网主机 B 的 ip,然后按照提示输入公网主机 B 的密码就完成了。

启动autossh

注意

前提是公网服务器的22001端口(也可自定义)已经开放,没有的话先去设置安全组

autossh -M 4010 -NR 22001:localhost:22 [email protected] (-p xxxx)

参数解释:

“-M 4010”意思是使用内网主机 A 的 4010 端口监视 SSH 连接状态,连接出问题了会自动重连“ -N”意思是不执行远程命令“-R”意思是将远程主机(公网主机 B)的某个端口转发到本地指定机器的指定端口

代码解释:

“22001:localhost:4000”意思是将内网主机 A 的 4000 号端口转发至公网主机 B 的 22001 号端口上“[email protected]”意思是公网主机 B 的用户名和 IP“-p xxxx”意思是公网主机 B 的 SSH 端口,如果是默认的 22 号端口,则可以不输入.

查看端口情况

lsof -i:4010 开机自启

在 Ubuntu 中我们可以使用 systemd 管理 autossh 的开机启动问题(旧版本中可以使用 init.d)。配置很简单,只需要创建一个 /etc/systemd/system/remote-autossh.service 文件:

[Unit] Description=AutoSSH service for remote tunnel After=network-online.target [Service] User=your_username ExecStart=/usr/bin/autossh -M 4010 -NR 22001:localhost:22 remote_user@a_a_a_a [Install] WantedBy=multi-user.target #这个target组内的所有服务都会开机自启,这才是systemctl的关键

这样就创建了一个 remote-autossh 服务,并指定其在网络服务启动后启动。可以运行 systemctl daemon-reload && systemctl start remote-autossh 立即启动服务,或者 systemctl enable remote-autossh.service 启动服务并设置为开机启动。

需要注意的是,配置文件中的 autossh 命令需要替换为其绝对地址,以及不支持 -f 参数。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3